FPGAの応用例10選
はじめに
先日開かれたre:InventではEC2の新しいインスタンスタイプとしてF1インスタンスが発表されました。
このインスタンスタイプは計算のためのリソースとしてFPGA(Field Programmable gate arrays)が用いれ、特殊な用途の計算に特化した計算回路をコードベースで実現できるようになります。
2016年12月13日現在、EC2 F1インスタンスタイプはプレビュー中ですが、FPGAがAWS上のマネージドなサービス上で提供され、開発に必要なハードの設定や物理的な機器の調達コストなどの参入障壁がほぼなくなった事によって、今後ソフトウェアエンジニアがプログラマブルなハードウェアの回路設計に着手しやすい状況が発生すると思われます。
この記事ではソフトウェアエンジニアがFPGAへの参入を検討するにあたってモチベーションとなるよう、具体的な応用例を提示することを目的にしています。
応用例の収集にあたっては、クラウドでのFPGA活用に向かないようなものは除外しました。例えば無線LANしか用いることが出来ない環境でのFPGAの活用例などです。
応用例10選
測定
CERNにおけるFPGAの応用例が紹介されています。素粒子の衝突実験の測定にFPGAを用いてパフォーマンスの改善が見られたようです。物理実験で用いる測定機器にはFPGAが用いられることもあり、ネットワーク周りを整備すればFPGAを用いた測定用機器をAWS上に移行する未来もそう遠くないような気はします。
配信
HD画質のTVコンテンツ配信の際にFPGAがどのように用いれるかのユースケースがまとめられています。
カメラから入ってきた入力をSDIインターフェイスに適合する形に変換する処理から始まり、前処理、圧縮、映像配信等でどのようにFPGAが用いられる化が紹介されています。
信号処理
フーリエ変換、画像フィルタ、偏微分方程式等の解決には置換という数学上の概念が用いられますが、この置換操作をFPGAを用いてスループットの改善や計算エネルギー効率の改善に役に立ったという事例が紹介されています。
データベース
クエリに対する実行計画をFPGAに特化したものに最適化してみた事例が紹介されています。実行計画の改善によってFPGA上のDBに対して大幅な速度向上が見られたようです。
医療
医療用途で用いるために画像処理を中心にFPGAがどのように用いられているかの事例が多数紹介されています。
- 画像診療
- 分子イメージング
- 画像処理まわりのアルゴリズム
- CTスキャン
- MRI
- 超音波
- 映像解析
- X-Ray
これらの分野に対してFPGAを用いることで主にパフォーマンス面での改善が見られるようです。
機械学習
CNN(畳み込みニューラルネットワーク)に適用して計算用途での最適化を図ると同時に、FPGAリソースをできるだけ用いない方向でパフォーマンスを発揮する方法についてルーフラインモデルを用いて探索した結果が紹介されています。
グラフ解析
ナレッジグラフ(いろいろな知識同士の関連をグラフ形式にしたもの)は論文やWebページ等、様々な基礎研究によく見られます。これらはサイズが大きなものになる傾向が強く、その中から隠れた関係を見つけ出すには通常のアルゴリズムでは計算量的に困難です。
この問題を近似的に解く方法としてStochastic Matrix-Function Estimator(SME: 確率的行列関数推定法とでもいいましょうか…)が提案されています。
このアルゴリズムにFPGAを用いたところいい結果が得られたという紹介になっています。
圧縮
圧縮用コマンドであるgzipの用いるlz77圧縮アルゴリズムとHuffmanエンコーディングをFPGAに最適化することでCPU実装と比較して12倍ものパフォーマンス向上に繋がった結果が紹介されています。
字句解析
侵入検知を目的として、ネットワーク上のデータを正規表現でパターンマッチングすることがあり、その用途としてFPGAを用いた例です。
金融
4年ほど前の記事ですが、金融分野のHFT(High Frequency Trading:高頻度取引)の用途にFPGAがどのように用いられているかの英語レポートを日本語で要約したものです。読み物として十分面白いです。クラウドで金融取引用途FPGAを用いることを連想するにあたって、ネットワークレイテンシの問題が出てくるかと個人的には思います。ですが、今後の需要次第では取引用途として新しいリージョンやサービスが提供され、レイテンシの問題が解決されることも期待してしまいますね。
まとめ
各種クラウドベンダのサービスを通じてサーバーを物理的に管理する必要がなくなってから、オンプレで管理していたデータリソースがクラウドに移行していったように、今後ネットワークに難なくつながる環境でのFPGAを用いた機器はクラウドに移行していく流れになるのではと個人的には考えています。
それがどのくらい先の話になるかはわかりませんが、回路設計という未知の領域が突如として開かれたと思うと冒険心がくすぐられますね。